/*
 * @Date: 2024-11-22 10:27:41
 * @LastEditors: Lcx l1556461835@163.com
 * @LastEditTime: 2025-03-18 10:32:35
 * @FilePath: \fushun-gitee\lib\Util.js
 * @Description: 
 */
import axios from "axios";
import { Loading, Message } from "element-ui";
/**
 * 获取登录后的用户信息
 */
export function getStorageUser() {
  return !process.server ? JSON.parse(localStorage.getItem("user")) : null;
}

/**
 * post 方式获取服务器端信息,不加密
 * @param { string } url 请求的url地址
 * @param { object } data value值
 * @param { object } addInfo 请求的haed信息
 * @param { isNotify } string 'no'不自动提示请求结果，默认在屏幕右上角显示服务器请求结果
 */
export async function post(url, data, addInfo, isNotify = "yes") {
  const tmp = await window.$nuxt.$postService(
    url,
    data,
    addInfo || {},
    isNotify || "yes"
  );
  return tmp;
}

/**
 * get 方式 获取服务器端信息,不加密
 * @param { string } url 请求的url地址
 * @param { object } data value值
 * @param { string } isNotify 'no'不自动提示请求结果，默认在屏幕右上角显示服务器请求结果
 */
export async function get(url, data, isNotify = "yes") {
  return await window.$nuxt.$getService(url, data || {}, isNotify);
}

/**
 * @description 获取页面中任意一个元素距离body的偏移量 等同于jQuery中的offSet方法
 * @param curEle
 * @returns {{top: null, left: null}}
 */

export function offSet(curEle) {
  let totalLeft = null;
  let totalTop = null;
  let par = curEle.offsetParent;
  //首先把自己本身的相加
  totalLeft += curEle.offsetLeft;
  totalTop += curEle.offsetTop;
  //现在开始一级一级往上查找，只要没有遇到body，我们就把父级参照物的边框和偏移相加
  while (par) {
    if (navigator.userAgent.indexOf("MSIE 8.0") === -1) {
      //不是IE8我们才进行累加父级参照物的边框
      totalTop += par.clientTop;
      totalLeft += par.clientLeft;
    }
    //把父级参照物的偏移相加
    totalTop += par.offsetTop;
    totalLeft += par.offsetLeft;
    par = par.offsetParent;
  }
  return { left: totalLeft, top: totalTop };
  //返回一个数组，方便我们使用哦。
}

// 下载文件通用办法
export function downloadFile(url, data) {
  let downloadLoadingInstance = Loading.service({
    text: "正在下载数据，请稍候",
    spinner: "el-icon-loading",
    background: "rgba(0, 0, 0, 0.7)"
  });
  axios({
    method: "get",
    url: url,
    data: data,
    responseType: "blob",
    headers: {
      userid: localStorage.getItem("userID") || "",
      "content-type": "application/json"
    }
  })
    .then(res => {
      const blob = new Blob([res.data], {
        type: res.headers["content-type"]
      });

      const link = document.createElement("a");
      link.href = URL.createObjectURL(blob);

      link.style.display = "none";

      let fileName = decodeURI(res.headers["download-filename"]);
      link.download = decodeURIComponent(fileName);

      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
      downloadLoadingInstance.close();
    })
    .catch(error => {
      Message.error("下载文件出现错误，请联系管理员！");
      downloadLoadingInstance.close();
    });
}
